今天想保持沈默,所以開頭以一個空的物件代替(´・ω・`)
昨天介紹到了建立物件的方法,那如果我想要讀取或者修改它,應該怎麼做呢?
在開始說明之前,要先釐清一下物件的組成:
const leo = {
name: “Leo”,
breed: "Ragdoll",
fur_color: "pointed"
}
大家可能或多或少會聽過:鍵(key)
、值(value)
等名稱。在JavaScript中,屬性(property)
這個詞,就是來代表物件中的鍵值對。以上面的例子為例,你可以說這個物件有三個屬性,而第二個屬性的名稱(或者鍵)為breed
,對應到的值是"Ragdoll"
。
而鍵
的使用上是有一點限制的:必須為符號
或者字串
,即使在設定時使用數字,仍是會被強制轉為字串。而值
可以是任何JavaScript中的型態。
有另外一個和物件很像的,叫map,它的key就可以是任意型態喔~
如下範例,物件中屬性的值可以是任何型態:
const maru = {
name: "Maru",
age: 1,
isFixed: true,
friends: [leo, sora],
appearance : {
fur_color: 'tortoiseshell',
eye_color: 'golden',
coat: 'longhair'
}
}
為什麼要將資料存在物件裡?當然就是希望能方便且有結構性的取出來用呀?
以下將說明幾種常用的存取方法:
當屬性名稱包含非
英文字母
、數字
、$
或_
,或者為數字開頭時,就只能用第2種方法取
console.log(maru.age) // 1
maru.age = 2
console.log(maru.age) // 2
記得要將鍵用
'' 或 ""
包成字串喔
console.log(maru['name']) // "Maru"
善用物件列舉的方法,可以讓你在前端印資料有如神助~
功能如其名,就是取得一個物件的所有鍵。值得注意的是,這邊只會列舉可列舉(enumerable)
的屬性名稱而已(預設為可列舉)。而此功能的回傳值,是將這些屬性名稱放進陣列之中回傳。
console.log(Object.keys(maru))
// ["name", "age", "isFixed", "friends", "appearance"]
功能如其名,就是取得一個物件的所有值。而此功能的回傳值,也是將這些值放進陣列之中回傳。
console.log(Object.values(maru))
假設我打了一個有關貓的資料的api,得到以下回傳值
const catList = [
{
name: "Leo",
age: 1,
isFixed: true,
friends: ['Maru', 'Sora'],
appearance : {
fur_color: 'seal point',
eye_color: 'light blue',
coat: 'longhair'
}
},
{
name: "Maru",
age: 1,
isFixed: true,
friends: ['Leo', 'Sora'],
appearance : {
fur_color: 'tortoiseshell',
eye_color: 'golden',
coat: 'longhair'
}
},
{
name: "Sora",
age: 0.5,
isFixed: false,
friends: ['Leo', 'Maru'],
appearance : {
fur_color: 'orange',
eye_color: 'green',
coat: 'shorthair'
}
}
]
const names = catList.map( cat => Object.values(cat)[0] )
console.log(names) // ["Leo", "Maru", "Sora"]
const coatValues = catList.map( cat => cat.appearance.coat )
console.log(coatValues) // ["longhair", "longhair", "shorthair"]
那麼關於物件的基本介紹就到這邊囉!
明天終於要進到看面試題目的階段囉~~
悲劇了(((゚Д゚;))),因為最近幾乎一天只睡4小時,剛剛發到一半直接睡著就超過12點_(:з」∠)_
我對不起我的隊友...害大家無法完成團隊挑戰(跪)
雖然已經跟完賽無緣,但自己挖的坑還是要完成!!
只能記取教訓,明年來雪恥時記得設鬧鐘,以及不要拖到晚上才發文
接下來還是會按照原本的預定持續發文喔,請大家多多指教了・゜・(PД`q。)・゜・